package com.dragon.modules.yuegou.model.park;

import com.dragon.modules.yuegou.entity.park.DeductionRuleEntity;
import com.dragon.modules.yuegou.enums.park.DeductionRuleDayLimit;
import com.dragon.modules.yuegou.enums.park.DeductionRuleDeductionType;
import com.dragon.modules.yuegou.enums.park.DeductionRuleDefaultUse;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * 停车抵扣规则模型类
 * 
 * @author pbuilder generated
 * @date 2022-05-18 15:36:39
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class DeductionRule extends DeductionRuleEntity {

	/**
	 * 构造一个空停车抵扣规则模型对象
	 */
	public DeductionRule(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个停车抵扣规则模型对象
	 * 
	 * @param entity 实体对象
	 */
	public DeductionRule(DeductionRuleEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个停车抵扣规则模型对象
	 * 
	 * @param other 其它对象
	 */
	public DeductionRule(DeductionRule other){
		super(other);
	}


	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置
	 * 
	 * @param id 
	 * @return 当前对象
	 */
    public DeductionRule id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public String getBusdId() {
    	return busdId;
    }

    /**
	 * 设置商圈ID
	 * 
	 * @param busdId 商圈ID
	 * @return 当前对象
	 */
    public DeductionRule busdId(String busdId) {
    	this.busdId = busdId;
    	return this;
    }

	@Override
	public DeductionRuleDeductionType getDeductionType() {
    	return deductionType;
    }

    /**
	 * 设置[枚举]抵扣方式：1-仅用卷-VOLUME、2-仅用积分-INTEGRAL、3-卷和积分-VOLUME_INTEGRAL、4-卷和积分二选一-COUPON_OR_POINT
	 * 
	 * @param deductionType [枚举]抵扣方式：1-仅用卷-VOLUME、2-仅用积分-INTEGRAL、3-卷和积分-VOLUME_INTEGRAL、4-卷和积分二选一-COUPON_OR_POINT
	 * @return 当前对象
	 */
    public DeductionRule deductionType(DeductionRuleDeductionType deductionType) {
    	this.deductionType = deductionType;
    	return this;
    }

	@Override
	public Integer getUnit() {
    	return unit;
    }

    /**
	 * 设置最小抵扣单位(积分)
	 * 
	 * @param unit 最小抵扣单位(积分)
	 * @return 当前对象
	 */
    public DeductionRule unit(Integer unit) {
    	this.unit = unit;
    	return this;
    }

	@Override
	public Integer getUnitMoney() {
    	return unitMoney;
    }

    /**
	 * 设置换算
	 * 
	 * @param unitMoney 换算
	 * @return 当前对象
	 */
    public DeductionRule unitMoney(Integer unitMoney) {
    	this.unitMoney = unitMoney;
    	return this;
    }

	@Override
	public BigDecimal getMoney() {
    	return money;
    }

    /**
	 * 设置换算，最小抵扣单位=元
	 * 
	 * @param money 换算，最小抵扣单位=元
	 * @return 当前对象
	 */
    public DeductionRule money(BigDecimal money) {
    	this.money = money;
    	return this;
    }

	@Override
	public Integer getMinNum() {
    	return minNum;
    }

    /**
	 * 设置最少抵扣数量（积分）
	 * 
	 * @param minNum 最少抵扣数量（积分）
	 * @return 当前对象
	 */
    public DeductionRule minNum(Integer minNum) {
    	this.minNum = minNum;
    	return this;
    }

	@Override
	public Integer getMaxNum() {
    	return maxNum;
    }

    /**
	 * 设置最多抵扣数量（积分
	 * 
	 * @param maxNum 最多抵扣数量（积分
	 * @return 当前对象
	 */
    public DeductionRule maxNum(Integer maxNum) {
    	this.maxNum = maxNum;
    	return this;
    }

	@Override
	public DeductionRuleDayLimit getDayLimit() {
    	return dayLimit;
    }

    /**
	 * 设置[枚举]是否限制每日抵扣次数：0-不限制-NO、1-限制-YES
	 * 
	 * @param dayLimit [枚举]是否限制每日抵扣次数：0-不限制-NO、1-限制-YES
	 * @return 当前对象
	 */
    public DeductionRule dayLimit(DeductionRuleDayLimit dayLimit) {
    	this.dayLimit = dayLimit;
    	return this;
    }

	@Override
	public Integer getDayMax() {
    	return dayMax;
    }

    /**
	 * 设置每月抵扣次数
	 * 
	 * @param dayMax 每月抵扣次数
	 * @return 当前对象
	 */
    public DeductionRule dayMax(Integer dayMax) {
    	this.dayMax = dayMax;
    	return this;
    }

	@Override
	public String getCreatedBy() {
    	return createdBy;
    }

    /**
	 * 设置创建人ID
	 * 
	 * @param createdBy 创建人ID
	 * @return 当前对象
	 */
    public DeductionRule createdBy(String createdBy) {
    	this.createdBy = createdBy;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 * @return 当前对象
	 */
    public DeductionRule createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }

	@Override
	public String getModifiedBy() {
    	return modifiedBy;
    }

    /**
	 * 设置更新人ID
	 * 
	 * @param modifiedBy 更新人ID
	 * @return 当前对象
	 */
    public DeductionRule modifiedBy(String modifiedBy) {
    	this.modifiedBy = modifiedBy;
    	return this;
    }

	@Override
	public LocalDateTime getModifiedTime() {
    	return modifiedTime;
    }

    /**
	 * 设置更新时间
	 * 
	 * @param modifiedTime 更新时间
	 * @return 当前对象
	 */
    public DeductionRule modifiedTime(LocalDateTime modifiedTime) {
    	this.modifiedTime = modifiedTime;
    	return this;
    }

	@Override
	public Boolean getDel() {
    	return del;
    }

    /**
	 * 设置逻辑删除，1表示已删除,0表示未删除
	 * 
	 * @param del 逻辑删除，1表示已删除,0表示未删除
	 * @return 当前对象
	 */
    public DeductionRule del(Boolean del) {
    	this.del = del;
    	return this;
    }

	@Override
	public String getDelBy() {
    	return delBy;
    }

    /**
	 * 设置删除人ID
	 * 
	 * @param delBy 删除人ID
	 * @return 当前对象
	 */
    public DeductionRule delBy(String delBy) {
    	this.delBy = delBy;
    	return this;
    }

	@Override
	public LocalDateTime getDelTime() {
    	return delTime;
    }

    /**
	 * 设置删除时间
	 * 
	 * @param delTime 删除时间
	 * @return 当前对象
	 */
    public DeductionRule delTime(LocalDateTime delTime) {
    	this.delTime = delTime;
    	return this;
    }

	@Override
	public DeductionRuleDefaultUse getDefaultUse() {
    	return defaultUse;
    }

    /**
	 * 设置[枚举]默认使用DEDUCTION_TYPE为4时不能为空：1-卷-COUPON、2-积分-POINT、3-智能推荐-RECOMMEND
	 * 
	 * @param defaultUse [枚举]默认使用DEDUCTION_TYPE为4时不能为空：1-卷-COUPON、2-积分-POINT、3-智能推荐-RECOMMEND
	 * @return 当前对象
	 */
    public DeductionRule defaultUse(DeductionRuleDefaultUse defaultUse) {
    	this.defaultUse = defaultUse;
    	return this;
    }
}
